Soru & Cevap

Swift İle Yazılan İos Uygulamada İnternet Kontrolü

12.08.2016 - 11:57

Merhabalar

Arkadaşlar aşağıdaki kodları kullanarak uygulamaya internet kontrolü yaptırıyorum.

  if Reachability.isConnectedToNetwork() == true {

            print("Internet connection OK")

            

            }

            else

            {

            print("Internet connection FAILED")

                let alert = UIAlertView(title: "İnternet Bağlantısı Yok", message: "Lütfen İnternet Bağlantınızı Kontrol Ediniz.", delegate: nil, cancelButtonTitle: "Tamam")

            alert.show()   

        }

 

Burda Yapmak İstediğim İnternet Kontrolü Çalışıyor Sıkıntı Yok. Ama Tamam Butonuna Tıkladığımda TIkladıktan Sonra İnternet Olsada Olmasada Uygulamada Beyaz Ekran Kalıyor. Benim Yapmak İstediğim Tamam Butonuna TIkladığımda İnternet Kontolünü Tekrar Yapsın. İnternet Varsa Açılması Gereken Site Açılsın. İnternet Yoksa Uygulamayı Kapatsın Çıkış Yapsın. Yardımcı Olabilecek Arkadaş Varmıdır? Teşekkürler.

65 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user burhanaksendir
burhanaksendir
16.08.2016 - 06:39
import UIKit
import SystemConfiguration

class ViewController: UIViewController, UIAlertViewDelegate  {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        kontrolMethodu()
       
    }
    
    
    
    func isInternet() -> Bool {
        return Reachability.isConnectedToNetwork()
    }
    
    func showAlert(){
        let createAccountErrorAlert: UIAlertView = UIAlertView()
        createAccountErrorAlert.delegate = self
        createAccountErrorAlert.title = "İnternet Bağlantısı Yok"
        createAccountErrorAlert.message = "Lütfen İnternet Bağlantınızı Kontrol Ediniz."
        createAccountErrorAlert.addButtonWithTitle("Vazgeç")
        createAccountErrorAlert.addButtonWithTitle("Tekrar Dene")
        createAccountErrorAlert.show()
    }
    
    func alertView(View: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){
        
        switch buttonIndex{
            
        case 1:
            print("Tekrar Dene");
            kontrolMethodu()
            break;
        case 0:
            print("Vazgeç");
            break;
        default:
            print("default");
            break;
            
        }
    }
    
    func kontrolMethodu() {
        
        if isInternet() {
            print("Internet connection OK")
        } else {
            print("Internet connection FAILED")
            
            showAlert()
            
        }
    }

    internal class Reachability {
        class func isConnectedToNetwork() -> Bool {
            var zeroAddress = sockaddr_in()
            zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
            zeroAddress.sin_family = sa_family_t(AF_INET)
            let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
                SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
            }
            var flags = SCNetworkReachabilityFlags()
            if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
                return false
            }
            let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
            let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
            return (isReachable && !needsConnection)
        }
    }


}

 

Mehmet TERZİOĞLU
26.12.2016 - 05:14
Hocam Tekrardan Merhaba İnternet bağlantı kontrolünü her sayfada nasıl yaptırabiliriz. yani internet varken bağlantı sağlandı. sayfaları dolaşırken internet gitti veya kullanıcı kapattı bir şekilde bağlantı kesildi internet gittiği anda uyarı çıkarsın en başta olduğu gibi. Teşekkürler.
Burhan Aksendir
28.12.2016 - 04:34
Merhaba. Bunun için farklı bir yapı kurmak gerekiyor. Öncelikle AppDelegate.swift içerisinde bir NSNotificationCenter ekleyip, network güncellemelerini dinlemek lazım. Burada tam istediğin şeyi anlatan bir örnek var. Bir gözat istersen: http://stackoverflow.com/questions/27310465/detecting-network-connectivity-changes-using-reachability-nsnotification-and-ne
Profile picture for user burhanaksendir
burhanaksendir
16.08.2016 - 03:27

Şöyle bir şey hazırladım. İşini görür.

 

func isInternet() -> Bool {
   return Reachability.isConnectedToNetwork()
}

func showAlert(){
    var createAccountErrorAlert: UIAlertView = UIAlertView()
    createAccountErrorAlert.delegate = self
    createAccountErrorAlert.title = "İnternet Bağlantısı Yok"
    createAccountErrorAlert.message = "Lütfen İnternet Bağlantınızı Kontrol Ediniz."
    createAccountErrorAlert.addButtonWithTitle("Vazgeç")
    createAccountErrorAlert.addButtonWithTitle("Tekrar Dene")
    createAccountErrorAlert.show()
}

func alertView(View: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){

    switch buttonIndex{

    case 1:
        print("Tekrar Dene");
        kontrolMethodu()
    break;
    case 0:
        print("Vazgeç");
        break;
    default:
        break;

    }
}

func kontrolMethodu() {

if isInternet() {
    print("Internet connection OK")
} else {
 print("Internet connection FAILED")
 
   showAlert()
        
}
}

 

Mehmet TERZİOĞLU
16.08.2016 - 02:52
Merhabalar; Cevabınız İçin Çok Teşekkür Ederim ALLAH Razı Olsun. Gönderdiğiniz Kodları Denedim Fakat İnternet Yokken Hiçbir Tepki Vermiyor Beyaz Sayfada Kalıyor Öyle Acaba Yanlış Yerde mi Kullanıyorum.
Burhan Aksendir
16.08.2016 - 03:44
Rica ederim. Amin. Ecmain. Sorun delegate ayarlamadığınız için. Şöyle olacak delegate ayarı: class ViewController: UIViewController, UIAlertViewDelegate
Mehmet TERZİOĞLU
16.08.2016 - 06:10
Hocam Dediğiniz Şekilde Yaptım Ama Malesef Sorun Çözülmedi. Sizin Gönderdiğiniz Kodları Yukarıda Yazdığım İf İçerisinde Kullanımda Sıkıntı Çekiyor Olabilirim. Ama Hangi Seçeneği Denediysem Düzelmedi.
Burhan Aksendir
16.08.2016 - 06:40
Class'ı komple paylaştım.
Mehmet TERZİOĞLU
18.08.2016 - 02:55
Hocam Teşekkür Ederim ALLAH Razı Olsun Çalıştı.
Burhan Aksendir
18.08.2016 - 05:09
Rica ederim :) Amin. Senden de.